package de.fhin.mas.ontology;

import jade.content.Concept;

import java.util.Date;

/**
 * Das Ergebnis einer Zielsuche. Enthält die Entfernungsdaten des gefundenen
 * Zielobjekts
 * 
 * @author Thomas Schläfer
 * 
 */
public class TargetSearchResult implements Concept {

	/**
	 * 
	 */
	private static final long serialVersionUID = -4807135616107707738L;

	/**
	 * Der Winkel zum gesuchten Objekt relativ zur Längsachse des Roboters.
	 * Werte von +0° bis +180° geben Positionen rechts vom Roboter an. Werte von
	 * -1° bis -179° geben Positionen links vom Roboter an. (0°: vorne; +90°:
	 * rechts; -90°: links; +180°: hinten;
	 */
	private int angle;

	/**
	 * Der Abstand des Suchobjekts zum Roboter in Zentimetern
	 */
	private int distance;

	/**
	 * Entstehungsdatum dieses Ergebnisses
	 */
	private Date date;

	/**
	 * Default Konstruktor für JADE
	 */
	public TargetSearchResult() {

	}

	/**
	 * Erzeugt ein neues TargetSearchResult Objekt
	 * 
	 * @param angle
	 *            Winkel zum gefundenen Objekt in Grad relativ zur Längsachse
	 *            des Roboters
	 * @param distance
	 *            Entfernung zum gefundenen Objekt in Zentimetern
	 */
	public TargetSearchResult(int angle, int distance) {

		// Datum auf jetzt setzen
		this.date = new Date();
		this.angle = angle;
		this.distance = distance;
	}

	/**
	 * Legt den Winkel des Suchobjekts relativ zur Längsachse des Roboters fest
	 * 
	 * @param angle
	 *            Der Winkel in Grad. Werte von +0° bis +180° geben Positionen
	 *            rechts vom Roboter an. Werte von -1° bis -179° geben
	 *            Positionen links vom Roboter an. (0°: vorne; +90°: rechts;
	 *            -90°: links; +180°: hinten;
	 */

	public void setAngle(int angle) {
		this.angle = angle;
	}

	/**
	 * Gibt den Winkel des Suchobjekts relativ zur Längsachse des Roboters
	 * zurück
	 * 
	 * @return Der Winkel in Grad.
	 */
	public int getAngle() {
		return angle;
	}

	/**
	 * Legt die Entfernung des gefundenen Objekts fest
	 * 
	 * @param distance
	 *            Entfernung des Objekts in Zentimetern
	 */

	public void setDistance(int distance) {
		this.distance = distance;
	}

	/**
	 * Gibt die Etnfernung des gefundenen Objekts zurück
	 * 
	 * @return Entfernung des Objekts in Zentimetern
	 */
	public int getDistance() {
		return distance;
	}

	/**
	 * Gibt das Datum zurück
	 * 
	 * @return Date Wert
	 */
	public Date getDate() {
		return date;
	}

	/**
	 * Legt das Datum fest
	 * 
	 * @param date
	 *            Date Wert
	 */
	public void setDate(Date date) {
		this.date = date;
	}
}
